package br.com.locasis.entity;

// Generated 24/05/2012 20:14:44 by Hibernate Tools 3.4.0.CR1

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.hibernate.validator.NotNull;

import br.com.locasis.utilitarios.UtilString;

/**
 * AluguelProduto generated by hbm2java
 */
@Entity
@Table(name = "aluguel_produto")
public class AluguelProduto implements java.io.Serializable {

	private Integer idAluguelProduto;
	private Aluguel aluguel;
	private Produto produto;
	private Float desconto;
	private Float valorTotal;
	private String observacao;
	private Integer quantidade;
	
	private Integer tipoDesconto;

	public AluguelProduto() {
	}

	public AluguelProduto(Integer idAluguelProduto, Aluguel aluguel,
			Produto produto, Float valorTotal) {
		this.idAluguelProduto = idAluguelProduto;
		this.aluguel = aluguel;
		this.produto = produto;
		this.valorTotal = valorTotal;
	}

	public AluguelProduto(Integer idAluguelProduto, Aluguel aluguel,
			Produto produto, Float desconto, Float valorTotal) {
		this.idAluguelProduto = idAluguelProduto;
		this.aluguel = aluguel;
		this.produto = produto;
		this.desconto = desconto;
		this.valorTotal = valorTotal;
	}

	@Transient
	public Integer getTipoDesconto() {
		return tipoDesconto;
	}

	@Transient
	public void setTipoDesconto(Integer tipoDesconto) {
		this.tipoDesconto = tipoDesconto;
	}

	@Id
	@Column(name = "id_aluguel_produto", unique = true, nullable = false)
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	public Integer getIdAluguelProduto() {
		return this.idAluguelProduto;
	}

	public void setIdAluguelProduto(Integer idAluguelProduto) {
		this.idAluguelProduto = idAluguelProduto;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_aluguel", nullable = false)
	@NotNull
	public Aluguel getAluguel() {
		return this.aluguel;
	}

	public void setAluguel(Aluguel aluguel) {
		this.aluguel = aluguel;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_produto", nullable = false)
	@NotNull
	public Produto getProduto() {
		return this.produto;
	}

	public void setProduto(Produto produto) {
		this.produto = produto;
	}

	@Column(name = "desconto", precision = 8, scale = 8)
	public Float getDesconto() {
		return this.desconto;
	}

	public void setDesconto(Float desconto) {
		this.desconto = desconto;
	}

	@Column(name = "valor_total", nullable = false, precision = 8, scale = 8)
	public Float getValorTotal() {
		return this.valorTotal;
	}

	public void setValorTotal(Float valorTotal) {
		this.valorTotal = valorTotal;
	}

	@Column(name = "observacao", nullable = true, length = 200)
	public String getObservacao() {
		return observacao;
	}

	public void setObservacao(String observacao) {
		this.observacao = observacao;
	}

	@Column(name = "quantidade", nullable = false)
	public Integer getQuantidade() {
		return quantidade;
	}

	public void setQuantidade(Integer quantidade) {
		this.quantidade = quantidade;
	}
	
	@SuppressWarnings("static-access")
	@Transient
	public String getValorTotalFormatado(){
		if(getValorTotal() != null){
			/*
			DecimalFormat df = new DecimalFormat("#,###.00");
			return "R$ "+df.format(this.getValorTotal());
			*/
			return UtilString.getInstance().formatarMoeda(this.getValorTotal());
		}
		return null;
	}
	
	@SuppressWarnings("static-access")
	@Transient
	public String getValorUnitarioFormatado(){
		if(getProduto() != null && getProduto().getValor() != null){
			/*
			DecimalFormat df = new DecimalFormat("#,###.00");
			return "R$ "+df.format(getProduto().getValor());
			*/
			return UtilString.getInstance().formatarMoeda(this.getProduto().getValor());
		}
		return null;
	}
	
	

}
